package com.bilibili.service;


import com.bilibili.entity.User;
import com.bilibili.vo.UserLoginVo;
import com.bilibili.vo.UserRegistVo;

/**
 * 用户相关的Service
 */
public interface UserService {
    /**
     * 根据用户名查询用户信息
     *
     * @param userName 用户名
     * @return 用户名对应的用户信息
     */
    User getUserByUserName(String userName);

    /**
     * 用户判断当前的用户名是都存在（仅仅就是做存在性的判断时候去用）
     *
     * @param userName 用户名
     * @return 用户名是否存在
     */
    boolean isUserNameExists(String userName);

    /**
     * 用户判断当前手机号是否存在
     *
     * @param phone 手机号
     * @return 手机号是否存在
     */
    boolean isPhoneExists(String phone);


    /**
     * 向手机发送验证码
     *
     * @param phone 要发送验证码的手机号
     * @return 是否发送成功
     */
    boolean sendValidateCode(String phone);


    /**
     * 注册操作
     *
     * @param userRegistVo 注册操作时前端传递的参数
     * @return 注册成功后的用户信息
     */
    User regist(UserRegistVo userRegistVo);

    /**
     * 登录操作
     *
     * @param userLoginVo 用户登录时候的参数封装的对象
     * @return 登录成功后的用户信息
     */
    User login(UserLoginVo userLoginVo);

}
